/*
 ============================================================================
 文件名    : Line.cpp
 描述     : CLine类的实现.
 ============================================================================
 */

// 引用
#include "WoodenBall.h"
#include "Line.h"

// ============================ 成员函数 ===============================

// ---------------------------------------------------------
// CWoodenBall::CWoodenBall
// 构造函数.
// ---------------------------------------------------------
//
CWoodenBall::CWoodenBall()
	{
	SetRad( 12 );
	SetPos( TRealPoint(100,500) );
	SetAcc( TRealVector(0.0f, -0.01f) );
	SetVel( TRealVector() );
	}

// ---------------------------------------------------------
// CWoodenBall::NewL
// 构造函数.
// ---------------------------------------------------------
//
CWoodenBall* CWoodenBall::NewL()
	{
	return new (ELeave)CWoodenBall;
	}

// ---------------------------------------------------------
// CWoodenBall::Hit
// 判断与线段相撞.
// ---------------------------------------------------------
//
TBool CWoodenBall::Hit( CLine* aLine )
	{
	if( !aLine->Hit( this ) )
		{
		return EFalse;
		}
	SetVel( GetVel() - GetAcc() );
	TRealVector mirror = GetVel().Mirror( aLine->GetDir() );
	mirror *= 1.0f;
	SetVel( mirror );
	if( !aLine->IsVertical() )
		{
		aLine->SetStart(TPoint(-1,-1));
		aLine->SetEnd(TPoint(0,0));
		}
	return ETrue;
	}

// 文件结束
